// 用户模型
const { DataTypes } = require('sequelize');
// 数据库实例
const sequelize = require('@/config/db');

/**
 * 路由表
 */

const Route = sequelize.define('Route', {
  menuName: {
    type: DataTypes.STRING,
    allowNull: false,
    comment: '菜单名称'
  },
  parentId: {
    type: DataTypes.INTEGER,
    allowNull: true,
    references: {
      model: 'Route',
      key: 'id'
    },
    comment: '上级菜单ID，顶级菜单为null'
  },
  path: {
    type: DataTypes.STRING,
    allowNull: false,
    comment: '路由地址'
  },
  permissionName: {
    type: DataTypes.STRING,
    allowNull: true,
    comment: '权限名称'
  },
  sortOrder: {
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: '排序序号'
  },
  icon: {
    type: DataTypes.STRING,
    allowNull: true,
    comment: '图标'
  },
  meta: {
    type: DataTypes.JSON,
    allowNull: true,
    comment: '其他信息'
  }
}, {
  // 其他模型选项
  timestamps: true, // 自动管理创建时间和更新时间
  paranoid: true,   // 启用软删除支持
  tableName: 'Route' // 表名
})

// 设置父子关系
Route.belongsTo(Route, { as: 'Parent', foreignKey: 'parentId' });
Route.hasMany(Route, { as: 'Children', foreignKey: 'parentId' });

module.exports = Route